
// 封装基于ts的栈结构
class ArrayStack {
    // 定义一个 私有 属性的数组
    private data: any[] = []

    // 添加到栈顶
    // push方法 将一个元素压入栈中
    push(element:any) : void{
        this.data.push(element)
    }

    // 移除栈顶
    // pop方法将栈顶元素移除出栈
    pop():any{
        return this.data.pop()
    }

    // 返回栈顶元素 栈顶就是最后添加到数组的元素
    peek():any{
        return this.data[this.data.length - 1]
    }

    // 判断是否为空
    isEmpty():boolean{
      return this.data.length === 0
    }

    // 返回栈结构的元素个数
    size():number{
        return this.data.length
    }

}

// 创建类的实例
const stack1 = new ArrayStack()

stack1.push('aa')
stack1.push('bb')
stack1.push('cc')
stack1.push('dd')

console.log(stack1.peek());
console.log(stack1.pop());
console.log(stack1.size());
console.log(stack1.isEmpty());



